/* ========================= eCAL LICENSE =================================
 *
 * Copyright (C) 2016 - 2019 Continental Corporation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * ========================= eCAL LICENSE =================================
*/

#pragma once

#include <QToolButton>
#include <QMainWindow>
#include <QListView>

class QListMenuToolButton
  : public QToolButton
{
  Q_OBJECT

public:
  QListMenuToolButton(QWidget* parent = nullptr);
  ~QListMenuToolButton();

  void setModel(QAbstractItemModel* model);
  void setModelColumn(int visible_column);
  void setMaxVisibleItems(int max_items);

  QAbstractItemModel* model() const;
  int modelColumn() const;
  int maxVisibleItems() const;

  void setSelection(const QModelIndex& selection);
  void setSelection(int row);
  void clearSelection();

signals:
  void itemSelected(const QModelIndex& index);

public slots:
  void showListMenu();

private slots:
  void listItemClicked(const QModelIndex& index);

protected:
  void mousePressEvent(QMouseEvent *e) override;

private:
  QMainWindow* popup_;
  QListView*   list_view_;

  int max_visible_items_;
};

